package com.newtouch.bxzs.business.product.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.newtouch.bxzs.business.product.model.RecommendationListBO;
import com.newtouch.bxzs.common.base.model.Recommendation;
import com.newtouch.bxzs.common.base.model.RecommendationInsuranceMap;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 建议书的mapper类，必须继承BaseMapper
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2021/1/11 14:54</td>
 * <td>lanwei</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author lanwei
 * @version 1.0.0
 * @since 1.0.0
 */
@Mapper
public interface RecommendationMapper extends BaseMapper<Recommendation> {

    /**
     * 查询建议书列表
     *
     * @param productType        产品分类
     * @param productName        产品名称
     * @param clientName         客户名称
     * @param startTime          查询条件开始时间
     * @param endTime            查询条件结束时间
     * @param year               查询从当前日期往前n年(可配置）内的建议书信息（可配置）
     * @param recommendationName 建议书名称
     * @return List<RecommendationListBO>
     */
    List<RecommendationListBO> getRecommendationList(@Param("productType") String productType, @Param("productName") String productName, @Param("clientName") String clientName, @Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("year") Integer year, @Param("recommendationName") String recommendationName);

    /**
     * 向建议书附加险关联表增加记录
     *
     * @param list RecommendationInsuranceMapVO集合
     */
    @Insert("<script>" +
            "INSERT INTO ASSISTANT_RECOMMENDATION_INSURANCE_MAP \n" +
            "(RECOMMENDATION_INSURANCE_MAP_ID,ADDITIONAL_INSURANCE_CODE,ADDITIONAL_INSURANCE_NAME,POLICY_AMOUNT,POLICY_PREMIUM,RECOMMENDATION_ID,CREATE_USER_ID,CREATE_TIME,UPDATE_USER_ID,UPDATE_TIME)\n" +
            "VALUES\n" +
            "\t<foreach collection='list' item='item' index='index' separator=','>\n" +
            "\t(replace(uuid(),'-',''),#{item.additionalInsuranceCode}, #{item.additionalInsuranceName}, #{item.policyAmount}, #{item.policyPremium}, #{item.recommendationId}, #{item.createUserId}, #{item.createTime}, #{item.updateUserId}, #{item.updateTime})" +
            "\t</foreach>" +
            "</script>")
    void insertIntoMapBach(@Param("list") List<RecommendationInsuranceMap> list);

    /**
     * 查看建议书列表人数
     *
     * @param productType        产品分类
     * @param productName        产品名称
     * @param clientName         客户名称
     * @param startTime          查询条件开始时间
     * @param endTime            查询条件结束时间
     * @param year               查询从当前日期往前n年(可配置）内的建议书信息（可配置）
     * @param recommendationName 建议书名称
     * @return 查看建议书列表人数
     */
    Integer getRecommendationLength(@Param("productType") String productType, @Param("productName") String productName, @Param("clientName") String clientName, @Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("year") Integer year, @Param("recommendationName") String recommendationName);


    /**
     * 根据建议书关联id查询建议书数量
     * @param relationId 建议书关联id
     * @return 建议书数量
     */
    Integer getRecommendationByRelationId(String relationId);

}
